/**
 * 1、封装登录和授权相关的逻辑。
 * 2、自 2022 年 10 月 25 日 24 时后，小程序 wx.getUserProfile 接口将被收回。
 * 登录的逻辑修改成，通过wx.login获取code，然后去后台获取用户的openid，后台会根据openid查询到系统里面的用户，然后把系统用户返回回来。
 * 原来可以通过 wx.getUserProfile 获取用户昵称和头像，现在不行了，只能获取openid
 */
const baseConfig = 'https://xit-edu.cn/2411xgtourapi/'

function login(callback){
  // wx.showLoading({title: '登录中...', mask: true})
  wx.login({
    success(res){
      if (res.code) {
        const {miniProgram} = wx.getAccountInfoSync()
        // console.log('11'+JSON.stringify(res))
        wx.request({
          url: baseConfig+'api/miniProgram/login',
          data: {
            code: res.code,
            appId: miniProgram.appId
          },
          method: 'POST',
          header: {'content-type': 'application/json'},
          success (res) {
            const {data, code} = res.data
            console.log(data)
            // console.log(res.data)
            if(code==200){
              const {wxInfo={},authInfo={}} = data
              //保存登录信息，包括微信用户信息和系统用户信息
              // wx.setStorageSync('token', 'Bearer '+authInfo.access_token)
              saveInfo(wxInfo,authInfo,callback)
            }else{
              wx.showToast({title: '登录服务器失败！', icon: 'error'})
            }
          },
          fail (res){
            wx.showToast({title: '登录服务器失败！', icon: 'error'})
          }
        })
      } else {
        console.log('登录失败！' + res.errMsg)
      }
    }
  })
  // wx.getUserProfile({
  //   desc: '展示用户信息',
  //   success: (userProfile) => {
  //     wxLogin(userProfile,callback)
  //   },
  //   fail:(res)=>{
  //     wx.hideLoading()
  //   }
  // })
}
// 2. 登录到微信
// function wxLogin(userProfile, callback){
//   wx.showLoading({title: '登录到微信...', mask: true})
//   wx.login({
//     success: (wxLoginInfo) => {
//       sysLogin(userProfile, wxLoginInfo, callback)
//     },
//     fail:(res)=>{
//       wx.showToast({title: '登录到微信失败！', icon: 'error'})
//     }
//   })
// }
// 3. 根据登录微信的信息和小程序弹出框的信息
// function sysLogin(userProfile, wxLoginInfo, callback){
//   const {userInfo} = userProfile
//   wx.showLoading({title: '登录到服务器...', mask: true})
//   wx.request({
//     url: getApp().globalData.host + '/api/miniProgram/login',
//     data: {
//       js_code: wxLoginInfo.code,
//       nickName: userInfo.nickName,
//       avatarUrl: userInfo.avatarUrl,
//       iv: userProfile.iv
//     },
//     method: 'GET',
//     header: {'content-type': 'application/json'},
//     success (res) {
//       const {data, code} = res.data
//       if(code==200){
//         const {wxInfo={},authInfo={}} = data
//         saveInfo(wxInfo,authInfo,callback)
//       }else{
//         wx.showToast({title: '登录服务器失败！', icon: 'error'})
//       }
//     },
//     fail (res){
//       wx.showToast({title: '登录服务器失败！', icon: 'error'})
//     }
//   })
// }
// 4. 保存登录信息
function saveInfo(wxInfo={},authInfo={},callback){
  wx.setStorageSync('wxInfo', wxInfo, true)
  wx.setStorageSync('authInfo',authInfo, true) 
  // wx.showToast({ title: '登录成功！', icon: 'success'})
  console.log('登录成功')
  callback && callback({wxInfo,authInfo})
}
// 获取token
function getToken(){
  let authInfo = wx.getStorageSync('authInfo',true)
  if(authInfo && authInfo.access_token){
    console.log('Bearer ' + authInfo.access_token)
    return 'Bearer ' + authInfo.access_token
  }else{
    return
  }
}
// 删除用户相关的信息
function removeUserInfo(callback){
  wx.showLoading({
    title: '退出中...',
  })
  wx.removeStorage({key: 'wxInfo'})
  wx.removeStorage({
    key: 'authInfo',
    success:function(res){
      callback(res)
      wx.showToast({
        title: '退出成功！',
        icon:'success'
      })
    }
  })
}

module.exports = {
  login,
  getToken,
  removeUserInfo
}